const fp = require("lodash/fp");
const data = [
  { name: "Ferrari FF", horsepower: 660, dollar_value: 700000, in_stock: true },
  {
    name: "Spyker C12 Zagato",
    horsepower: 650,
    dollar_value: 648000,
    in_stock: false,
  },
  {
    name: "Jaquar XKR-S",
    horsepower: 550,
    dollar_value: 132000,
    in_stock: false,
  },
  { name: "Audi R8", horsepower: 525, dollar_value: 114200, in_stock: true },
  {
    name: "Aston Martin One-77",
    horsepower: 750,
    dollar_value: 1850000,
    in_stock: true,
  },
  {
    name: "Pagani Huayra",
    horsepower: 700,
    dollar_value: 1300000,
    in_stock: false,
  },
];

// 代码题 第二题 第一练习
const f1 = fp.flowRight(fp.prop("in_stock"), fp.last);
console.log("2-1 ======> ", f1(data));

// 代码题 第二题 第二练习
const firstName = fp.flowRight(fp.prop("name"), fp.first)(data);
console.log("2-2 ======> ", firstName);

// 代码题 第二题 第三练习
let _average = function(xs) {
  return fp.reduce(fp.add, 0, xs) / xs.length;
};

// let averageDollarValue = function(cars) {
//   let dollar_values = fp.map(function(car) {
//     return car.dollar_value;
//   }, cars);

//   return _average(dollar_values);
// };
// console.log(averageDollarValue(data));

let fn = fp.flowRight(_average, fp.map(fp.prop("dollar_value")));
console.log("2-3 ======> ", fn(data));

// 代码题 第二题 第四练习
let _underscore = fp.replace(/\W+/g, "_");
const sanitizeNames = fp.flowRight(
  _underscore,
  fp.map(fp.flowRight(_underscore, fp.toLower))
);
console.log("2-4 ======> ", sanitizeNames(["Hello World"]));
